/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package c;

import clases.InterfaceControllers;
import java.util.HashMap;
import m.UsuariosModel;
import v.UsuariosViewGrid;

/**
 *
 * @author Sebas
 */
public class UsuariosController extends Controller implements InterfaceControllers {

    UsuariosModel model = new UsuariosModel();

    public UsuariosController() {
    }

    public void grid() {
        new UsuariosViewGrid().setVisible(true);
    }

    public Object[][] obtenerTodo() {
        return model.obtenerTodo();
    }

    public boolean add(String... values) {
        return model.add(values[0]);
    }

    @Override
    public boolean mod(String... values) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public boolean del(int id) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    // Contiene los campos de la tabla que deben ser validados
    public HashMap validar(String nombre) {
        HashMap validaciones = new HashMap();

        // La siguiente validacion permitiria
        validaciones.put("nombre", " val->" + nombre + " {:} no_vacio[El campo {campo} no puede ser vacio ] {:} "
                + " es_nombreApellido[El campo {campo} no es un nombre valido] {:} min[5][El campo {campo} tiene que ser de minimo {min} caracteres] "
                + " {:} max[5][El campo {campo} tiene que ser de minimo {max} caracteres] ");


        return validar(validaciones);
    }

    public Object[][] buscar(String txtBusqueda) {
        return model.buscar(txtBusqueda);
    }
    // Meotod de inicio, NO alterar
//    public static void main(String args[]) {
//        java.awt.EventQueue.invokeLater(new Runnable() {
//
//            public void run() {
//                new UsuariosController().grid();
//            }
//        });
//    }

    public String prepararTransaccion(String tabla, StringBuilder sqlAndRestricciones, String mod, String entidad, String campoPK) {
        String resultValidacion = "";
        resultValidacion = sqlAndValidation(tabla, sqlAndRestricciones, mod, campoPK);

        System.out.println("getSqlInsert() = " + getSqlInsert());

        if (resultValidacion.isEmpty()) {
            if (mod.equals("INSERT")) {

                Boolean eje = (getSqlCount() == null) ? true : model.count(getSqlCount()) == 0;
                // verificar primero que no exista ya el registro
                if (eje) {
                    if (add(getSqlInsert())) {
                        resultValidacion = "ok[¡Información Ingresada Correctamente!] Se ha ingresado al Sistema <b>" + entidad + "</b> de forma satisfactoria.";
                    } else {
                        resultValidacion = "error[Problemas Ingresando la Información] <b>" + entidad + "</b> no se agrego al Sistema.";
                    }
                } else {
                    resultValidacion = "error[Información Duplicada] <b>" + entidad + "</b> Ya existe en el Sistema , verifique la información introducida.";
                }

            } else if (mod.equals("UPDATE")) {

                Boolean eje = ((getSqlCount() == null) ? true : model.count(getSqlCount()) == 0) || allowUpdate();

                if (eje) {
                    if (add(getSqlUpdate())) {
                        resultValidacion = "ok[¡Información Actualizada Correctamente!] Los Datos de <b>" + entidad + "</b> fueron cambiados.";
                    } else {
                        resultValidacion = "error[Problemas Actualizando la Información] Los Datos de <b>" + entidad + "</b> no se lograron actualizar.";
                    }
                } else {
                    resultValidacion = "error[Información Duplicada] <b>" + entidad + "</b> Ya existe en el Sistema , verifique la información introducida.";
                }

            }

        }

        resetAllowUpdate(); //Inicializar Validador de Existencia
        return resultValidacion;
    }
}
